package com.xbongbong.admin.service;

import com.xbongbong.admin.pojo.dto.RaidersDetailDTO;
import com.xbongbong.admin.pojo.dto.RaidersListDTO;
import com.xbongbong.admin.pojo.dto.RaidersOperationDetailDTO;
import com.xbongbong.admin.pojo.vo.RaidersDetailVO;
import com.xbongbong.admin.pojo.vo.RaidersListVO;
import com.xbongbong.admin.pojo.vo.RaidersOperationDetailVO;
import com.xbongbong.paas.toolbox.exception.XbbException;

/**
 * 价值攻略相关
 * @author zcp
 * @version v1.0
 * @date 19/9/23 023 20:44
 * @update 19/9/23 023 20:44
 * @since v1.0
 */
public interface RaidersService {

    /**
     * 获取某个分组的攻略列表（如果是私有推荐分组，则推荐分组内的攻略需要按照推荐顺序进行排序）
     * @param raidersListDTO
     * @return com.xbongbong.admin.pojo.vo.RaidersListVO
     * @throws XbbException
     * @author zcp
     * @date 19/9/24 024 13:48
     * @update 19/9/24 024 13:48
     * @since v1.0
     * @version v1.0
     */
    RaidersListVO list(RaidersListDTO raidersListDTO) throws XbbException;

    /**
     * 攻略详情
     * （1）构建攻略公司关系
     * （2）判断权限：攻略是否删除、是否发布、是否在阶段内（购买几个月等）、登录员工是否在角色权限范围
     * （3）如果在权限范围，则判断是否解锁：已解锁，进入详情，否则无权进去
     * （4）只读取到攻略内enable为1的步骤
     * （5）需获取攻略内各个步骤的得分，以及该步骤是否已完成
     * @param raidersDetailDTO
     * @return com.xbongbong.admin.pojo.vo.RaidersDetailVO
     * @throws XbbException
     * @author zcp
     * @date 19/9/27 027 16:35
     * @update 19/9/27 027 16:35
     * @since v1.0
     * @version v1.0
     */
    RaidersDetailVO detail(RaidersDetailDTO raidersDetailDTO) throws XbbException;

    /**
     * 攻略详情-实操使用
     * @param raidersOperationDetailDTO
     * @return com.xbongbong.admin.pojo.vo.RaidersOperationDetailVO
     * @throws XbbException
     * @author zcp
     * @date 19/9/29 029 19:41
     * @update 19/9/29 029 19:41
     * @since v1.0
     * @version v1.0
     */
    RaidersOperationDetailVO operationDetail(RaidersOperationDetailDTO raidersOperationDetailDTO) throws XbbException;

    /**
     * 移除某个分组的攻略
     * @param raidersListVO
     * @throws XbbException
     * @author youli.chen
     * @date 19/9/24 024 13:48
     * @update 19/9/24 024 13:48
     * @since v1.0
     * @version v1.0
     */
    void removeRaider(RaidersListVO raidersListVO) throws XbbException;
}
